Flash-based memory devices such as solid state drives (SSD) are increasingly popular due to their short read and write latencies, and increased throughput. Flash memory is typically built from programmable floating-gate cells, organized as blocks, which are the units of erasure. Each block typically contains 64-384 pages, ranging in size from 2 KB to 16 KB, which are the read and write units. Thus, before rewriting a given page, its entire block, including all the other pages included in that block, must be erased.
Since a block must be erased before a page can be rewritten, flash memory must be ‘overprovisioned’ to allow out-of-place rewrites. In this case, the previous location is marked as invalid, the data is rewritten on a clean page and a Flash Translation Layer (FTL) maps logical to physical addresses. Overprovisioning is defined as
            T      -      U        U    ,where T and U represent physical and logical blocks, respectively. Typical values for overprovisioning are between 7% and 28%.
However, SSDs have several drawbacks, namely that they must be erased before being rewritten. A zero can be written as a one, but a one cannot revert back to a zero until the entire block is erased. Before a given block can be erased for reuse, any valid pages must be rewritten, incurring additional overhead that affects performance. Additionally, the lifetime of flash memory cells is limited by the number of erasures a block can endure before its reliability deteriorates below an acceptable level.
The foregoing examples of the related art and limitations related therewith are intended to be illustrative and not exclusive. Other limitations of the related art will become apparent to those of skill in the art upon a reading of the specification and a study of the figures.